<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <!-- 
    生命周期钩子函数一共有11个
    在一个组件的声明周期中，有以下四个过程
    创建 挂载 更新 销毁
    每个过程都有两个钩子函数，分别为
      beforeCreate
      created
      beforeMount
      mounted 
      beforeUpdate
      updated 
      beforeDestroy 
      destroyed 
    当初始化事件和生命周期后，会调用beforeCreate函数
    调用完成后，组件会被注入数据，然后调用created完成创建工作

    接着判断组件配置对象中是否有el选项
      如果有则接着判断是否有template选项
      如果没有则等待vm.$mount被调用，调用后继续判断是否有template选项

      如果有template选项，则直接使用template的内容覆盖el，作为渲染的模板
      如果没有template，直接使用el的outerHTML作为模板使用
      
      当上面一步执行完成后，会调用beforeMount函数
      接着Vue会创建vm.$el这个属性，并且用el去替换他
      替换后则会调用mounted函数，这个时候挂载完成并进入等待过程

    一旦组件的数据发生改变，那么会先执行beforeUpdate函数，然后虚拟DOM更新完成后，会执行updated函数，这个时候一次更新完成，再次进入等待过程

    如果组件被销毁，则会先触发beforeDestroy函数，销毁组件上侦听器，子组件以及事件监听，然后destroyed调用，调用后，组件被销毁

    这是11个生命周期钩子函数中的八个，其他三个
    
    

   -->
</body>
</html>